Skip to content

Job runs wait for completion - #6091

Merged
radakam merged 42 commits into
mainfrom
job-runs-wait-for-completion
Aug 11, 2026
Merged

Job runs wait for completion#6091
radakam merged 42 commits into
mainfrom
job-runs-wait-for-completion

Conversation

@radakam

@radakam radakam commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Changes

The experimental job_runs resource now waits for the triggered run to finish before the deploy continues.

  • WaitAfterCreate polls the run to a terminal state. SUCCESS continues the deploy; any other terminal state fails it, reporting the failed tasks, their messages, and a link to the run page.
  • The run's outcome is part of the diff. PrepareState stamps the required SUCCESS and RemapState carries the state the run actually reached, so a non-success run shows up as drift and is re-triggered on the next deploy. result_state is cleared before persistence — it is a planning sentinel and is not written to resources.json. The root ignore_remote_changes rule is replaced by a per-field list covering every jobs.RunNow field, which keeps result_state comparable.
  • An in-progress run is adopted: OverrideChangeDesc downgrades the drift to an update, and DoUpdate finishes a wait that an interrupted deploy left running.
  • DoDelete cancels a still-active run before deleting it, because jobs/runs/delete rejects an active run.

The fake workspace rolls failed tasks up into the run state the way the Jobs API does, and answers jobs/runs/cancel.

Why

Waiting makes the run's output usable: ${resources.job_runs.<name>.state.result_state} can be referenced by other resources and resolves only for a successful run, so nothing downstream is created from a failed or in-flight run.

Two non-obvious choices:

  • The wait polls GetRun directly rather than the SDK's WaitGetRunJobTerminatedOrSkipped. The SDK waiter discards the run on INTERNAL_ERROR (where a failed-task run lands), leaving nothing to name the failing task from. The direct poll is a thin retries.Poll wrapper, and runIsTerminal is needed by the plan and delete paths anyway.
  • Adoption exists because an interrupted deploy leaves a run going with its id already recorded. Resuming the wait on that run avoids cancelling work that may still succeed.

Tests

  • Unit tests for the wait, failure reporting, plan classification of every run state, and the fake workspace's new behavior.
  • Acceptance: wait (deploy waits, a downstream job reads the outcome, redeploy is a no-op), failed_run (deploy fails naming the task, the failed run is re-triggered), interrupted_run (an abandoned wait is resumed). basic / interrupted_run assert result_state is not persisted. wait and failed_run also run against a real workspace on serverless.

@eng-dev-ecosystem-bot

eng-dev-ecosystem-bot commented Jul 28, 2026

Copy link
Copy Markdown
Collaborator

Integration test report

Commit: f5ecb4f

Run: 31375179731

Env 💚​RECOVERED 🙈​SKIP ✅​pass 🙈​skip Time
💚​ aws linux 5 3 305 1389 7:22
💚​ aws windows 5 3 307 1387 6:26
💚​ azure linux 5 3 304 1389 6:18
💚​ azure windows 5 3 306 1387 6:43
💚​ gcp linux 2 4 305 1389 6:16
💚​ gcp windows 2 4 307 1387 7:08
8 interesting tests: 5 RECOVERED, 3 SKIP
Test Name aws linux aws windows azure linux azure windows gcp linux gcp windows
💚​ TestAccept 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R
💚​ TestAccept/bundle/invariant/no_drift 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R
🙈​ TestAccept/bundle/resources/vector_search_endpoints/drift/recreated_same_name 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/vector_search_indexes/recreate/embedding_dimension 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/ssh/connection 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
💚​ TestFetchRepositoryInfoAPI_FromRepo 💚​R 💚​R 💚​R 💚​R 🙈​S 🙈​S
💚​ TestFetchRepositoryInfoAPI_FromRepo/root 💚​R 💚​R 💚​R 💚​R
💚​ TestFetchRepositoryInfoAPI_FromRepo/subdir 💚​R 💚​R 💚​R 💚​R
Top 9 slowest tests (at least 2 minutes):
duration env testname
3:15 aws linux TestAccept/bundle/resources/job_runs/failed_run/DATABRICKS_BUNDLE_ENGINE=direct
3:13 gcp windows TestAccept
3:08 azure windows TestAccept
3:04 aws windows TestAccept
2:24 gcp windows TestAccept/bundle/resources/job_runs/failed_run/DATABRICKS_BUNDLE_ENGINE=direct
2:21 aws windows TestAccept/bundle/resources/job_runs/failed_run/DATABRICKS_BUNDLE_ENGINE=direct
2:20 azure windows TestAccept/bundle/resources/job_runs/failed_run/DATABRICKS_BUNDLE_ENGINE=direct
2:15 azure linux TestAccept/bundle/resources/job_runs/failed_run/DATABRICKS_BUNDLE_ENGINE=direct
2:06 gcp linux TestAccept/bundle/resources/job_runs/failed_run/DATABRICKS_BUNDLE_ENGINE=direct

@radakam
radakam marked this pull request as ready for review July 29, 2026 14:22
@radakam
radakam force-pushed the job-runs-wait-for-completion branch from 6635efd to 26506cf Compare August 3, 2026 10:57
Comment thread acceptance/bundle/resources/job_runs/wait_cloud/script Outdated
Comment thread acceptance/bundle/resources/job_runs/wait_output/script Outdated
Comment thread bundle/direct/bundle_plan.go Outdated
@radakam
radakam changed the base branch from main to workspaceurls-job-run-page-url August 3, 2026 12:26
@radakam
radakam changed the base branch from workspaceurls-job-run-page-url to main August 3, 2026 12:27
@radakam
radakam force-pushed the job-runs-wait-for-completion branch from 26506cf to af3da99 Compare August 4, 2026 06:46
yolocs pushed a commit to yolocs/dbcli that referenced this pull request Aug 4, 2026
## Changes

Move the legacy-to-path run URL conversion from `bundle/run/job.go` into
`libs/workspaceurls` as `JobRunPageURL`, next to the `JobRunPath` helper
it already used. Tests move with it. The `ctx` parameter is dropped
since it only fed two debug lines.

## Why

A second caller outside `bundle run` needs it: the `job_runs` resource
in databricks#6091.

## Tests

Existing unit tests, moved unchanged apart from the dropped `ctx`.
@radakam
radakam force-pushed the job-runs-wait-for-completion branch from 692b289 to ce69326 Compare August 5, 2026 08:19
Comment thread acceptance/bundle/refschema/out.fields.txt
@radakam
radakam requested a review from denik August 5, 2026 18:08
@radakam
radakam force-pushed the job-runs-wait-for-completion branch 2 times, most recently from ab5620b to bcfaf78 Compare August 7, 2026 12:13
Comment thread bundle/direct/dresources/all_test.go Outdated
Comment thread bundle/direct/dresources/job_run.go Outdated
>>> [CLI] bundle deploy
Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/job-runs-basic/default/files...
Deploying resources...
job run [MY_RUN_ID]: Run URL: [DATABRICKS_URL]/jobs/[MY_JOB_ID]/runs/[MY_RUN_ID]?o=[NUMID]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we include key name in the prefix?

"Output from jobs_runs.foo: id=[MY_RUN_ID]: ..."

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems to need the resource key in cmdio output at the framework-level, I think it might make sense to do as a follow up, what do you think?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can be a follow up if hard to do right away

Comment thread acceptance/bundle/resources/job_runs/failed_run/script Outdated
# Runs the failing job for real, so the message the deploy names the task with is
# one a workspace reported. Serverless needs Unity Catalog.
Cloud = true
RequiresUnityCatalog = true

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought we don't need this anymore? RequiresUnityCatalog

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is still needed as serverless requires UC, so without it a non-UC workspace would fail instead of skipping.

Comment thread acceptance/bundle/refschema/out.fields.txt
radakam added 13 commits August 10, 2026 08:05
The fake workspace reported every run as TERMINATED SUCCESS, overwriting the
FAILED state it had just recorded for a task it executed locally. A run now
reports the terminal state its tasks add up to, so a failing run can be
exercised end to end locally.

Tasks whose code the fake workspace does not have are left successful. An
immutable deployment, for example, uploads the bundle as a snapshot zip that the
fake workspace never unpacks, so there is nothing to execute; that gap is in the
fake workspace, not in the job under test.

Originally reviewed as #6082.
Deploying a job_run triggered the run and moved on, so a resource referencing
the run's outcome saw whatever state the run happened to be in. The resource now
implements the framework's WaitAfterCreate hook, which blocks until the run is
terminal and republishes the settled remote state; only SUCCESS lets the deploy
continue.

While it waits, the deploy reports the run page URL and each state change, the
way `bundle run` does, since a run can take hours. A run that does not succeed
fails the deploy with the failed task, the message that task reported, and a link
to the run page. Bounded by 24h, matching `bundle run`.

The framework saves the run id before the wait, so a run that fails stays
recorded and an unchanged config plans no second run; failed_run covers that.

run_page_url is now normalized to the path form that also resolves for
non-admins.

invariant/configs/job_run.yml.tmpl loses its notebook task, which deploying it
would now actually run, and is excluded from cloud runs: a real workspace reports
a condition-task-only run as SKIPPED, and a task that does succeed would add a
multi-minute cluster run to every variant of a suite that asserts plan and state
invariants. Still covered locally.
The wait reimplemented what `bundle run`'s monitor already does: report the run
page URL once, then each state change. Both now go through
progress.JobStateTracker, which decides what a poll is worth reporting; the two
callers keep their own sinks, since a concurrent deploy reports plain prefixed
lines where `bundle run` reports progress events.

The failure the deploy reports no longer repeats the run id that the framework's
wrapper already carries; what the wait adds is the link to a run that outlives it.
Excluding job_run.yml.tmpl from cloud left job_runs with no cloud coverage at
all: every test under resources/job_runs inherits Cloud=false. The behaviour
this milestone adds is the one that depends most on the real Jobs API, so
wait_cloud triggers a run for real and reads the outcome back out of the
downstream job, the way the vector search exclusion points at a dedicated test.

Serverless keeps the run to about a minute, and the deploy's progress stream
stays out of the golden: a real run reports an unpredictable number of
intermediate states.
The ignore_remote_changes for job_parameters assumes GetRun reports every
parameter the job defines, not just the ones the run overrode. Assert that on the
run wait_cloud already triggers by overriding one of two parameters and planning
after the deploy.
Drop the comments that only restate the code, the duplicated note about the
framework prefixing the run id, and the filler in the ones that carry a reason.
Reporting every state change made a deploy's output depend on how many states the
run passed through, which varies with how long its compute takes to start. That
cost the cloud test its coverage: it had to grep the deploy log instead of
comparing it. The full state history is still in the log.

Also record that a failed run is not run again in the changelog entry.
The message the deploy names a failed task with came from an error the test server
writes itself, so nothing checked that a real workspace reports one at all. Assert
it does, and that we are not falling back to the states the run reports.
Also fix jobRunServer's doc, which said it returns a server when it returns a
client.
Interrupting a deploy mid-wait leaves the run going, and jobs/runs/delete rejects
an active run, so destroy failed and the bundle could not be torn down without
cancelling the run by hand. Delete now cancels it first, and waits for the
cancellation to settle since the API cancels asynchronously.

The interrupt itself was reported as a timeout, blaming the 24h bound for
something the user did. It now says it was interrupted, and still links the run,
whose page URL is pinned to the first poll that reported one.

The run left going is what the next deploy reads, and it triggers no second run,
so a reference to the outcome resolves to an empty string. Recorded in a test
rather than fixed here: stopping a run the user did not ask to stop is a
departure from `bundle run`, which leaves interrupted runs alive.
A real workspace reports a run whose task failed as INTERNAL_ERROR in the
deprecated life_cycle_state, though status.state is TERMINATED with termination
code RUN_EXECUTION_ERROR. The SDK waiter halts on INTERNAL_ERROR with an error of
its own, so the deploy blamed the run for an internal failure instead of naming
the task that failed and the message it reported. The wait now polls for any
state runIsTerminal accepts, the definition the delete path already used, and
leaves the verdict to the run's result.

The Jobs API retries a task that failed and reports it once per attempt, so the
same task was named twice over. Only its last attempt is reported now.

The fake workspace rolls a failed task up to TERMINATED FAILED, so failed_cloud
was the only test that saw either of these; both are now covered by unit tests.
Interrupting a deploy mid-wait leaves the run going and its id recorded, so the
next deploy plans no change for it and serves references to it from the remote
state cache. An unfinished run reports an empty result_state, and that was
substituted into whatever referenced it, configuring a downstream resource with
the outcome of a run that had not reached one.

Resources now declare when their outputs are not final yet, through an optional
CheckSettled that mirrors IsGone, and reference resolution fails with what the
resource reports instead of handing out the zero value. job_runs answers with
runIsTerminal, the definition the wait loop already polls for, so the two cannot
drift apart, and names the run and links its page.

The check sits at reference resolution rather than in DoRead or the planner, so
it only fires for a bundle that actually reads the outcome. A deploy that merely
carries the run keeps working, as do plan, summary and destroy, while the run
finishes on its own; cancelling it would be the departure from `bundle run` that
this branch already declined to make.
wait_cloud inherited Local=true, so both tests deployed the same job_run
against the test server and differed only in the assertions that followed. The
merged test keeps wait_output's coverage that the resolved result_state tag is
not perpetual drift, and reads the tag back with `jobs get` rather than from
recorded requests, so that assertion holds against a real workspace as well.

Recording requests stays off: the wait polls GetRun until the run is terminal,
so the recorded requests depend on how long the run takes.

The _cloud suffix goes with it, since the test was never cloud-only.
radakam added 20 commits August 10, 2026 08:05
Whether an id rendered as [MY_JOB_ID] or as a bare [NUMID] depended on nothing
but whether the script happened to call read_id.py for that resource, so basic
named both ids, redeploy named only the job, and job_parameters named neither.
Reading three neighbouring tests meant guessing which number was which.

Register the ids instead, via the assignment form that adds the replacement
without printing it, and let the auto-suffix distinguish the generations of a
recreated run. That turns two assertions from unverifiable into checkable:
redeploy and failed_run both claimed a redeploy replaces the run, but printed
the deleted run and its replacement as the same [NUMID]. They now read
[MY_RUN_ID] and [MY_RUN_ID_2].

[NUMID] stays for the ?o= / ?w= workspace selector, which is not a resource id.
Comparing WaitAfterCreate's return against a fresh read, and rebasing the field
checks onto it, applied to every resource, but job_runs is the only one whose
remote state moves while the wait blocks: the testserver settles the others on
create, so both forms assert the same thing for them.

Keep the original comparison for those and take the new path only for job_runs,
so the change stays where it is needed. A resource whose handler later models a
create-then-settle transition will fail the plain comparison and needs adding to
the exception.
Comparing WaitAfterCreate's remote against a fresh DoRead held by construction:
both build the value with makeJobRunRemote from a GetRun response, and the run
is terminal by then, so the two cannot differ. It also did not check the thing
worth checking -- an early return from the wait would leave both sides equally
non-terminal -- and the drift a lossy recorded state would cause is already
covered by resources/job_runs/{basic,wait}.

What remains is not an assertion: result_state fills in only once the run
settles, so the field checks at the end of testCRUD have to read the settled
state rather than the one from just after create.
The wait borrowed `bundle run`'s progress event to report a run, which put a
timestamp in the middle of a deploy's output, made dresources depend on the
`bundle run` progress package, and repeated on failure the state message the
error already carries. A deploy now prints the run page and, once the run
succeeds, its outcome; every state change still goes to the log. bundle/run is
untouched again, so the shared JobStateTracker is no longer needed.

Review cleanups along with it:

- ignore_remote_changes says why each field is ignored rather than calling all
  of them immutable: job_id is, the parameter fields come back resolved against
  the job's defaults, and the rest are never returned. The reason is what
  `bundle plan` shows the user.
- Restore the note that `field: ""` matches nothing, which still applies to the
  root recreate_on_changes rule.
- Drop TestLookupReferencePreDeploy_JobRunReferencesAreRaw, left over from the
  CheckSettled iteration: it asserts framework behaviour this branch does not
  change.
- testCRUD reads the resource again after WaitAfterCreate instead of special
  casing job_runs, the way the DoUpdate block below it already does.
- Drop the RecordRequests failed_run already inherits, and comment the read_id.py
  call that exists only to register a replacement.
…d to job_runs

The previous commit made every resource compare WaitAfterCreate's return against
a fresh read and rebased the field checks onto it, but job_runs is the only one
whose remote state moves while the wait blocks: the testserver settles the others
on create, so the original assertion already says the same thing for them.

Restore that assertion and take the settled state only for job_runs, whose
result_state fills in once the run finishes and which the field checks below
therefore need.
A run has a handful of tasks, so scanning the slice already built is cheaper
than a map plus a second slice to keep the order it was filled in.
State is deprecated in favour of Status. Both are set today, so taskFailed
took the simpler one and taskError read its message; the day a workspace
stops setting State, every failed task would go unreported and the run's own
generic message would be all that is left. Fall back to Status instead.
newTaskFailure read the exception off the last line of the task's output, so
a task that exited non-zero silently was reported with an empty message.
An interrupted wait leaves the run going, and DoDelete cancels it before
deleting it, since jobs/runs/delete rejects an active run. The fake had no
handler for that call, so the path had no local coverage.
The condition task needed no compute, but a real workspace reports a run with
no material task to execute as SKIPPED, which fails the wait. A serverless
Python task keeps the run to about a minute.
Several comments on this branch explained the option that was not taken (the
SDK waiter, a condition task, reporting the whole output as the error). Drop
the alternatives and state the behaviour the code has.
A deploy interrupted while waiting leaves a run going, and its empty
result_state read as drift, so the next deploy cancelled a run that could
still succeed and triggered another. OverrideChangeDesc now downgrades that
drift to an update while the run has not reached a terminal lifecycle state,
and WaitAfterUpdate resumes the wait on it.
DoUpdate existed only because DeploymentUnit.Update refuses to run without
it, so the wait it enables lived in a second hook. One method that waits
says the same thing as an empty one plus WaitAfterUpdate.
OverrideChangeDesc is a pure function over (path, change, remote), but the
interrupted_run acceptance test was its only coverage, which is why proving
a 9-line rule needs fault injection and a saved plan.
The in-progress rule is already covered through the planner in
bundle_plan_test.go, which reaches more lifecycle states than the direct
calls added on top of it.
The old comment read as if the run itself failed, which is confusing next to
the failed_run test.
The SDK's WaitGetRunJobTerminatedOrSkipped drops the run on INTERNAL_ERROR,
which is the state a run whose task failed lands in, so runFailedError would
have nothing left to name the task from. Also fold the empty-result_state
fallback into cmp.Or and drop a single-use flag in the CRUD harness.
Local is no longer a test.toml key; keeping it fails config loading.
Keep result_state as a planning sentinel so failed runs still recreate, but
do not write it to resources.json. Refresh remote after WaitAfterCreate in
testCRUD, and dump the persisted job_run state in basic/interrupted_run.
@radakam
radakam force-pushed the job-runs-wait-for-completion branch from bcfaf78 to 604844c Compare August 10, 2026 08:05
@radakam
radakam requested a review from denik August 10, 2026 08:12
Clearing result_state before persistence leaves no old value in state, so
the plan now shows a skipped remote_already_set change for it.
resources/job_runs/failed_run failed on every cloud. A real workspace sends
"user_cancelled_or_timedout": false, which the SDK records in ForceSendFields,
so copying GetRun's state into the remote serialized that field against a
workspace and not against the testserver. Build the state from the three
fields the resource reads instead.

run_page_url needed a replacement too: failed_run records requests, so on
cloud the CLI is configured with the proxy's host and [DATABRICKS_URL] no
longer matches the workspace host the Jobs API reports.
>>> [CLI] bundle deploy
Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/job-runs-basic/default/files...
Deploying resources...
job run [MY_RUN_ID]: Run URL: [DATABRICKS_URL]/jobs/[MY_JOB_ID]/runs/[MY_RUN_ID]?o=[NUMID]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can be a follow up if hard to do right away

@radakam
radakam added this pull request to the merge queue Aug 11, 2026
Merged via the queue into main with commit d926bf3 Aug 11, 2026
26 checks passed
@radakam
radakam deleted the job-runs-wait-for-completion branch August 11, 2026 09:26
@eng-dev-ecosystem-bot

Copy link
Copy Markdown
Collaborator

Integration test report

Commit: d926bf3

Run: 31477721757

Env ❌​FAIL 🟨​KNOWN 🤯​MISS 🔄​flaky 💚​RECOVERED 🙈​SKIP ✅​pass 🙈​skip Time
❌​ aws linux 6 1 6 5 2 1163 932 265:33
❌​ aws windows 6 1 6 5 2 1102 951 301:07
❌​ azure linux 10 1 13 5 2 1046 969 205:52
🔄​ azure windows 5 6 2 1003 988 228:55
🔄​ gcp linux 4 3 3 1055 973 241:58
🔄​ gcp windows 3 2 3 996 992 278:19
58 interesting tests: 21 flaky, 16 FAIL, 13 MISS, 5 RECOVERED, 2 SKIP, 1 KNOWN
Test Name aws linux aws windows azure linux azure windows gcp linux gcp windows
🟨​ TestAccept 🟨​K 🟨​K 🟨​K 💚​R 💚​R 🔄​f
💚​ TestAccept/bundle/invariant/no_drift 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R
🔄​ TestAccept/bundle/resources/apps/lifecycle-started-omitted ✅​p ✅​p ✅​p ✅​p ✅​p 🔄​f
🔄​ TestAccept/bundle/resources/apps/lifecycle-started-omitted/DATABRICKS_BUNDLE_ENGINE=direct ✅​p ✅​p ✅​p ✅​p ✅​p 🔄​f
🔄​ TestAccept/bundle/resources/apps/lifecycle-started-toggle ✅​p 🔄​f ✅​p ✅​p 🔄​f ✅​p
🔄​ TestAccept/bundle/resources/apps/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🔄​f ✅​p ✅​p 🔄​f ✅​p
🔄​ TestAccept/bundle/resources/grants/catalogs ✅​p ✅​p ✅​p ✅​p 🔄​f ✅​p
🔄​ TestAccept/bundle/resources/grants/catalogs/DATABRICKS_BUNDLE_ENGINE=direct ✅​p ✅​p ✅​p ✅​p 🔄​f ✅​p
❌​ TestAccept/bundle/resources/grants/schemas/change_privilege ✅​p ✅​p ❌​F ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/resources/grants/schemas/change_privilege/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p ✅​p ❌​F ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/resources/grants/schemas/remove_principal ✅​p ✅​p ❌​F ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/resources/grants/schemas/remove_principal/DATABRICKS_BUNDLE_ENGINE=direct ✅​p ✅​p ❌​F ✅​p ✅​p ✅​p
🔄​ TestAccept/bundle/resources/permissions/dashboards/create ✅​p 🔄​f ✅​p ✅​p 🙈​s 🙈​s
🔄​ TestAccept/bundle/resources/permissions/dashboards/create/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🔄​f ✅​p ✅​p
❌​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions ❌​F ❌​F 🙈​s 🙈​s 🙈​s 🙈​s
❌​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions/DATABRICKS_BUNDLE_ENGINE=direct ❌​F ❌​F
❌​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions/DATABRICKS_BUNDLE_ENGINE=terraform ❌​F ❌​F
❌​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions ❌​F ❌​F 🙈​s 🙈​s 🙈​s 🙈​s
❌​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions/DATABRICKS_BUNDLE_ENGINE=direct ❌​F ❌​F
❌​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions/DATABRICKS_BUNDLE_ENGINE=terraform ❌​F ❌​F
🔄​ TestAccept/bundle/resources/postgres_branches/recreate 🔄​f ✅​p 🙈​s 🙈​s 🙈​s 🙈​s
🔄​ TestAccept/bundle/resources/postgres_branches/recreate/DATABRICKS_BUNDLE_ENGINE=terraform 🔄​f ✅​p
🔄​ TestAccept/bundle/resources/postgres_catalogs/recreate 🔄​f ✅​p 🙈​s 🙈​s 🙈​s 🙈​s
🔄​ TestAccept/bundle/resources/postgres_catalogs/recreate/DATABRICKS_BUNDLE_ENGINE=direct 🔄​f ✅​p
🔄​ TestAccept/bundle/resources/postgres_databases/update 🔄​f ✅​p 🙈​s 🙈​s 🙈​s 🙈​s
🔄​ TestAccept/bundle/resources/postgres_databases/update/DATABRICKS_BUNDLE_ENGINE=terraform 🔄​f ✅​p
🔄​ TestAccept/bundle/resources/quality_monitors/change_assets_dir ✅​p 🔄​f ✅​p ✅​p ✅​p ✅​p
🔄​ TestAccept/bundle/resources/quality_monitors/change_assets_dir/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🔄​f ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/resources/secret_scopes/permissions ✅​p ✅​p ❌​F ✅​p 🙈​s 🙈​s
❌​ TestAccept/bundle/resources/secret_scopes/permissions/DATABRICKS_BUNDLE_ENGINE=direct ✅​p ✅​p ❌​F ✅​p
❌​ TestAccept/bundle/resources/synced_database_tables/basic ✅​p ✅​p ❌​F ✅​p 🙈​s 🙈​s
❌​ TestAccept/bundle/resources/synced_database_tables/basic/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p ✅​p ❌​F ✅​p
💚​ TestAccept/bundle/resources/vector_search_endpoints/drift/recreated_same_name 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R
🙈​ TestAccept/bundle/resources/vector_search_indexes/recreate/embedding_dimension 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/ssh/connection 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🔄​ TestFsCpFileToDirWithOverwriteFlag/local_to_uc-volumes ✅​p ✅​p ✅​p 🔄​f ✅​p ✅​p
🔄​ TestFsCpFileToDirWithOverwriteFlag/uc-volumes_to_local ✅​p ✅​p ✅​p 🔄​f ✅​p ✅​p
🔄​ TestFsCpFileToDirWithOverwriteFlag/uc-volumes_to_uc-volumes ✅​p ✅​p ✅​p 🔄​f ✅​p ✅​p
🔄​ TestFsCpFileToFileWithOverwriteFlag/uc-volumes_to_dbfs ✅​p ✅​p ✅​p 🔄​f ✅​p ✅​p
🔄​ TestFsCpFileToFileWithOverwriteFlag/uc-volumes_to_local ✅​p ✅​p ✅​p 🔄​f ✅​p ✅​p
❌​ TestFilerReadDir ✅​p ✅​p ❌​F ✅​p ✅​p ✅​p
❌​ TestFilerReadDir/files ✅​p ✅​p ❌​F ✅​p ✅​p ✅​p
🤯​ TestFilerReadDir/workspace_files ✅​p ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestFilerReadWrite ✅​p ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestFilerReadWrite/files ✅​p ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestFilerReadWrite/workspace_files ✅​p ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestFilerWorkspaceNotebook ✅​p ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestFilerWorkspaceNotebook/pyNb.py ✅​p ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestFilerWorkspaceNotebook/pythonJupyterNb.ipynb ✅​p ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestFilerWorkspaceNotebook/rJupyterNb.ipynb ✅​p ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestFilerWorkspaceNotebook/rNb.r ✅​p ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestFilerWorkspaceNotebook/scalaJupyterNb.ipynb ✅​p ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestFilerWorkspaceNotebook/scalaNb.scala ✅​p ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestFilerWorkspaceNotebook/sqlJupyterNotebook.ipynb ✅​p ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestFilerWorkspaceNotebook/sqlNb.sql ✅​p ✅​p 🤯​M ✅​p ✅​p ✅​p
💚​ TestFetchRepositoryInfoAPI_FromRepo 💚​R 💚​R 💚​R 💚​R 🙈​S 🙈​S
💚​ TestFetchRepositoryInfoAPI_FromRepo/root 💚​R 💚​R 💚​R 💚​R
💚​ TestFetchRepositoryInfoAPI_FromRepo/subdir 💚​R 💚​R 💚​R 💚​R
Top 50 slowest tests (at least 2 minutes):
duration env testname
17:13 gcp windows TestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
15:36 aws windows TestAccept/bundle/invariant/delete_idempotent/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/READPLAN=1
15:20 gcp linux TestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
13:23 aws linux TestAccept/bundle/config-remote-sync/multiple_resources/DATABRICKS_BUNDLE_ENGINE=terraform
12:49 aws windows TestAccept/bundle/invariant/delete_idempotent/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster.yml.tmpl/READPLAN=1
11:42 aws windows TestAccept/bundle/invariant/delete_idempotent/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster.yml.tmpl/READPLAN=
11:01 gcp linux TestAccept/bundle/resources/clusters/deploy/local_ssd_count/DATABRICKS_BUNDLE_ENGINE=direct
9:43 aws windows TestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
9:35 aws linux TestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
9:34 gcp windows TestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
9:11 gcp linux TestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
9:05 gcp linux TestAccept/bundle/resources/apps/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct
8:22 azure windows TestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
8:21 azure linux TestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
8:03 aws linux TestAccept/bundle/invariant/delete_idempotent/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/READPLAN=1
8:01 gcp windows TestAccept/bundle/resources/apps/lifecycle-started-omitted/DATABRICKS_BUNDLE_ENGINE=direct
7:51 gcp linux TestAccept/bundle/config-remote-sync/multiple_resources/DATABRICKS_BUNDLE_ENGINE=direct
7:48 gcp linux TestAccept/bundle/resources/apps/lifecycle-started-omitted/DATABRICKS_BUNDLE_ENGINE=direct
7:46 aws linux TestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
7:43 gcp linux TestAccept/bundle/invariant/delete_idempotent/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster.yml.tmpl/READPLAN=
7:41 azure windows TestAccept
7:15 gcp windows TestAccept/bundle/invariant/delete_idempotent/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/READPLAN=
7:15 gcp windows TestAccept/bundle/resources/clusters/deploy/local_ssd_count/DATABRICKS_BUNDLE_ENGINE=direct
7:03 aws windows TestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
6:57 azure windows TestAccept/bundle/resources/clusters/deploy/data_security_mode/DATABRICKS_BUNDLE_ENGINE=direct
6:50 azure windows TestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
6:47 azure linux TestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
6:39 aws linux TestAccept/bundle/config-remote-sync/multiple_resources/DATABRICKS_BUNDLE_ENGINE=direct
6:30 gcp linux TestAccept/bundle/config-remote-sync/multiple_resources/DATABRICKS_BUNDLE_ENGINE=terraform
6:22 gcp windows TestAccept/bundle/resources/apps/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct
6:22 azure linux TestAccept/bundle/config-remote-sync/multiple_resources/DATABRICKS_BUNDLE_ENGINE=direct
6:20 gcp linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
6:20 gcp linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
6:09 aws windows TestAccept/bundle/deploy/spark-jar-task/DATABRICKS_BUNDLE_ENGINE=direct
6:05 gcp windows TestAccept/bundle/resources/registered_models/basic/DATABRICKS_BUNDLE_ENGINE=terraform
6:02 azure linux TestAccept/bundle/resources/clusters/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct
5:45 gcp windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
5:43 aws windows TestAccept/bundle/invariant/delete_idempotent/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job.yml.tmpl/READPLAN=
5:40 aws windows TestAccept/bundle/invariant/delete_idempotent/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/READPLAN=
5:38 gcp linux TestAccept/bundle/resources/clusters/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct
5:36 azure linux TestAccept/bundle/config-remote-sync/multiple_resources/DATABRICKS_BUNDLE_ENGINE=terraform
5:23 gcp windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
5:21 gcp windows TestAccept/bundle/resources/clusters/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct
5:19 aws windows TestAccept/bundle/resources/clusters/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct
5:11 gcp linux TestAccept/bundle/deploy/spark-jar-task/DATABRICKS_BUNDLE_ENGINE=terraform
5:07 aws windows TestAccept/bundle/resources/apps/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct
5:06 azure windows TestAccept/bundle/deploy/spark-jar-task/DATABRICKS_BUNDLE_ENGINE=terraform
5:06 aws linux TestAccept/bundle/deploy/spark-jar-task/DATABRICKS_BUNDLE_ENGINE=terraform
5:01 aws windows TestAccept/bundle/invariant/delete_idempotent/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_endpoint.yml.tmpl/READPLAN=1
5:01 aws linux TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_BUNDLE_ENGINE=terraform/DLT=no/NBOOK=no/PY=no/READPLAN=

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants